package com.rightsidetech.activity.service;

import com.github.pagehelper.PageInfo;
import com.rightsidetech.activity.dto.request.ActActivityAuditRecordReq;
import com.rightsidetech.activity.dto.request.MtActivityBaseInfoFindReq;
import com.rightsidetech.activity.dto.request.MtActivityBaseInfoInsertReq;
import com.rightsidetech.activity.dto.request.MtActivityBaseInfoUpdateReq;
import com.rightsidetech.activity.dto.request.store.*;
import com.rightsidetech.activity.dto.response.ActActivityAuditRecordResp;
import com.rightsidetech.activity.dto.response.MtActivityBaseInfoPageResp;
import com.rightsidetech.activity.dto.response.MtActivityServiceDetailResp;
import com.rightsidetech.activity.dto.response.mtUserJoinActivityPrizeResp;
import com.rightsidetech.activity.dto.response.store.*;
import com.rightsidetech.activity.entity.*;
import com.rightsidetech.commom.base.ResponseData;

import java.util.List;

/**
 * @Author: yhr
 * @Date: 2022-02-08 15:35
 */
public interface MtActivityService {
    ResponseData<PageInfo<MtActivityServicePageResp>> page(MtActivityServicePageReq req);

    ResponseData<PageInfo<MtActivityServiceInfoPageResp>> activityInfoPage(MtActivityServiceInfoPageReq req);

    Long saveMtActivity(MtActivity req);

    int updateMtActivity(MtActivity req);

    int saveMtActivityRule(MtActivityRule req);

    MtActivity selectByName(String name);

    MtActivityRule selectByActId(Long actId,String modId);

    int saveMtActivityRuleDetail(MtActivityRuleDetailWithBLOBs req);

    int updateMtActivityRuleDetail(MtActivityRuleDetailWithBLOBs req);

    ResponseData<MtActivityServiceDetailResp> activityInfo(Long activityId);

    ResponseData verify(MtActivityVerifyReq req);

    ResponseData verifyImg(MtActivityVerifyImgReq req,Long loginInfoId,String loginName);

    int delRule(Long actId);

    ResponseData delActivity(Long actId);

    void activityRelation(Long activityId,String areaIds, String agentIds);

    MtActivity selectById(Long actId);

    ResponseData selectDateByActId(Long actId,Byte type);

    MtActivityRule selectRule(Long actId,String mold);

    PageInfo<Long> selectBizId(MtActivityActStoreIdReq req);

    List<MtAwardImgResp> selectImgBizId(Long actId, Long storeId);

    PageInfo<MtActivityEndPageResp> activityEndPage(MtActivityEndPageReq req);

    ResponseData<PageInfo<MtActivityEndInfoResp>> activityEndInfoPage(MtActivityActIdReq req, List<Long> areaIds, MtActivityRule rule);

    int insertBusiness(MtActivityRuleBusiness business);

    int deleteByActId(Long actId);

    ResponseData<PageInfo<ActActivityAuditRecordResp>> findActivityAuditRecordPage(ActActivityAuditRecordReq req);

    void updateStatus();

    void storeActivityRankingTask(List<Long> ids);

    ResponseData inserActivityBaseInfo(MtActivityBaseInfoInsertReq req, Long loginId, String loginName);

    ResponseData updateActivityBaseInfo(MtActivityBaseInfoUpdateReq req, Long loginId, String loginName);

    ResponseData delActivityBaseInfo(Long id);

    ResponseData<PageInfo<MtActivityBaseInfoPageResp>> findActivityBaseInfoPage(MtActivityBaseInfoFindReq req);

    ResponseData<PageInfo<mtUserJoinActivityPrizeResp>> findMtUserJoinActivityProcess(MtActivityActStoreIdReq req);

    List<MtActivityRule> selectRuleAll(Long actId, String dicType);

    ResponseData activityPayment(Long id, List<Long> areaIds, MtActivityRule rule,Long loginId,String loginName);

    ResponseData<List<MtActivityBannerResp>> findMtActivityBanner(MtActivityBannerReq req);

    List<MtUserJoinActivityApply> selectApplyByActId(Long actId);

    ResponseData insertAtActivity(ActActivityAuditRecord activityAuditRecord);

    MtActivityBaseInfo findActivityBaseInfo(Long activityBaseInfoId);
}
